// 封装 axios
// 三步：实例化  请求拦截器  响应拦截器
import axios from 'axios'

const http = axios.create({
  // 请求根路径
  baseURL: '',
  // 请求超时时间
  timeout: 60000
})

// 添加请求拦截器
http.interceptors.request.use(config => {
  // 在此统一挂载登录后的 token 
  const token = ''
  if (token) {
    config.headers.authorization = `Bearer ${token}`
  }

  return config
}, error => {
  console.log('请求报错：', error)
  ElMessage.error('请求出错！')
})

// 添加响应拦截器
http.interceptors.response.use(response => {
  // code >= 200 && code < 300 的请求都会触发这个函数
  // TODO：后续可以在此统一处理响应回来的数据
  if (!response.data) return true
  return response.data
}, error => {
  // 如果 error.response.status === 401 则错误跟用户身份相关则让用户重新登录
  if (error.response.status === 401) {
    removeToken()
    // window.location.href = '/login'
    window.location.reload()    // 刷新页面会触发路由鉴权就会自动导航到登录页了
    setTimeout(() => {
      ElMessage.error('登录失效，请重新登录')
    }, 10)
  }
  console.log('响应报错：', error)
  ElMessage.error(error.response.data.message ?? '接口响应出错！')
})

// 导出 http
export default http